package com.yichang.comisiones.controller;

import com.yichang.comisiones.dto.GrupoComisionVenta;
import com.yichang.comisiones.service.ComisionVentaService;
import com.yichang.comisiones.service.MesService;
import com.yichang.comisiones.service.UsuarioService;
import com.yichang.comisiones.util.ControllerUtil;
import java.security.Principal;
import java.util.Calendar;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 *
 * @author josh
 */
@Controller("comisionesController")
public class ComisionesController {

    
    @Autowired
    private MesService mesService;
    
    @Autowired
    private UsuarioService usuarioService;
    
    @Autowired
    private ComisionVentaService comisionVentaService;    
    
    private static Logger log = LoggerFactory.getLogger(ComisionesController.class);
        
    @RequestMapping(value = "comisiones/index")
    public String index(HttpServletRequest request,
                        Model model,
                        Principal principal,
                        @RequestParam(value="periodo", required=false) Integer periodo,
                        @RequestParam(value="empleadoId", required=false) String empleadoId) {
        request.getSession().setAttribute("username",principal.getName());
        model.addAttribute("periodos", mesService.listarMeses());
        model.addAttribute("empleadoId",empleadoId);
        if (ControllerUtil.getCurrentUser().getUserId() == null) {
            model.addAttribute("empleados", usuarioService.buscarTodos(false));
        }
        if (periodo == null) {
            //Seleccionar periodo actual
            Calendar cal = Calendar.getInstance();
            int month = cal.get(Calendar.MONTH) + 1;
            int year = cal.get(Calendar.YEAR);
            periodo = year * 100 + month;
        }
        model.addAttribute("periodo", periodo);
        String userId;
        if (empleadoId == null) {
            userId = ControllerUtil.getCurrentUser().getUserId();
        } else {
            userId = empleadoId;
        }
        
        
        if (periodo!=null && userId != null){   
            GrupoComisionVenta grupoComisionVenta = new GrupoComisionVenta(comisionVentaService.listarComisionVentaPorEmpleado(periodo, userId));
            model.addAttribute("grupoComision", grupoComisionVenta);
        }
        return "comisiones/index";
    }
    
}
